<?php

namespace App\Service\User;

use App\Model\DiscountVideoRank;
use App\Model\DiscountVideoUsers;
use App\Model\UserProfile;

/**
 * 特惠视频排名
 */
class DiscountVideoRankService extends UserBaseService
{
    protected $pageNum = 20;

    public function handle()
    {
        $userId = (int)$this->getUserId();

        $ret = [];

        if (empty(DiscountVideoUsers::getLog(($userId)))) {
            $ret['rule'] = [
                'title' => '恭喜您，您已获得平台优质用户资格',
                'desc' => '恭喜您，您已获得平台优质用户资格，现邀请您参加特惠活动，加入后将获得大量的流量曝光和优质用户匹配～',
                'content' => "1⃣️加入后将获得特惠视频权限与高频率曝光

2⃣️男用户将根据特惠视频20金币/分钟给你拨打视频

3⃣️加入视频特惠通话后，你将获得平台每个周期分配的特惠排行奖励"
            ];

            return $ret;
        }

        $ret['reward_desc'] = "4月份特惠视频周榜活动
1.每周特惠通话前15名女生（特惠视频时长不低于80分钟）可获得平台奖励；
2.平台金币奖励如下：
第1名 4880
第2名 2880
第3名 1880
第4名 1680
第5名 1380
第6名 1080
第7名~第10名 880
第11名~第15名 580";

        $rankInfo = DiscountVideoRank::getRankInfo($userId);

        $myInfo = DiscountVideoRank::getInfo($userId);
        if (empty($myInfo)) {
            $ret['myRank'] = [
                'ranking' => '您的排名：暂无数据',
                'msg'  => '',
            ];
        } else {
            $ret['myRank'] = [
                'ranking' => "您的排名：100+",
                'msg'  => "已接听特惠{$myInfo->call_time}分钟",
            ];
        }

        $rank = [];
        foreach ($rankInfo as $key => $item) {
            if (count($rank) < 15) {
                $rank[] = [
                    'ranking' => $key + 1,
                    'nick_name' => $this->substrCut($item['nick_name']),
                    'call_time' => $item['call_time'],
                    'avatar'    => UserProfile::buildAvatar($item['avatar'], 200),
                ];
            }

            if ($myInfo && $item['user_id'] == $userId) {
                $ranking = $key + 1;
                $ret['myRank']['ranking'] = "您的排名：{$ranking}";

                break;
            }
        }

        $ret['list'] = $rank;

        return $ret;
    }

    public function substrCut($user_name)
    {
        $strlen = mb_strlen($user_name, 'utf-8');
        //如果字符创长度小于2，不做任何处理
        if ($strlen < 2){
            return $user_name ."*";
        } else{
            //mb_substr — 获取字符串的部分
            $firstStr = mb_substr($user_name, 0, 1, 'utf-8');
            $lastStr = mb_substr($user_name, -1, 1, 'utf-8');
            //str_repeat — 重复一个字符串
            return $strlen == 2 ? $firstStr . str_repeat('*', mb_strlen($user_name, 'utf-8') - 1) : $firstStr . str_repeat("*", $strlen - 2) . $lastStr;
        }
    }
}
